/**
 * Created with JetBrains PhpStorm.
 * User: DELL
 * Date: 1/4/13
 * Time: 6:42 PM
 * To change this template use File | Settings | File Templates.
 */
/*
* Cart Util
* Components By AnhDT
* Email: anhdt118@gmail.com
* Mobile: 0942732200
* Released: 2012 - 2013
* */
if (typeof Cart == 'undefined') {
    var Cart = {};
}

// Add Product To Cart
Cart.addProduct = function(item) {
    var id = item.id;
    var number = item.number;
    var data = {"data[id]": id, "data[number]": number};
    var tid = (new Date()).getTime();
    $.ajax({
        url: BASE_URL + 'checkout/cart/ajax_add_product',
        type: "POST",
        data: data,
        success: function(data) {
            data = $.parseJSON(data);
            if (data.success != undefined) {
                Cart.noticeAdded(data.product);
            }
        }
    });
    return false;
};

Cart.noticeAdded = function(product) {
    var container = $('#frm_notice_added');
    if ($(container).size() > 0) {
        $(container).remove();
    }
    var form = '';
    form += '<div id="frm_notice_added" class="frame_block">';
    form += '   <div class="sp_block">';
    form += '   <div class="sp_block_padding">';
    form += '       <div class="sp_block_heading">';
    form += '           <div class="bl"><strong>Bạn đã thêm vào giỏ hàng</strong></div>';
    form += '           <div class="br close_button" onclick="close_dialog(\'frm_notice_added\')"></div>';
    form += '       </div>';
    form += '       <div class="sp_block_content" style="padding-top: 1px; padding: 15px; height: auto; max-height: 99%; overflow: auto">';
    form += '           <div class="cl">';
    form += '               <div class="bl">';
    form += '                   <img src="' + product.image + '" width="150px" />';
    form += '               </div>';
    form += '               <div class="bl" style="margin-left: 10px;">';
    form += '                   <h3 style="width: 300px; padding: 0px; margin: 0px; line-height: 19px; font-size: 13px;">'+product.name+'</h3>';
    form += '                   <p>Giá bìa: <span style="color: black;text-decoration: line-through;">'+number_format(product.price)+' đ</span></p>';
    form += '                   <p>Giá bìa: <strong style="font-size: 16px;color: #951400;font-weight: bold;">'+number_format(product.final_price)+' đ</strong></p>';
    form += '                   <p>Số lượng: <span id="product_number">'+product.number+'</span></p>';
    form += '               </div>';
    form += '            </div>';
    form += '        </div>';
    form += '        <div class="sp_block_footer">';
    form += '            <p><a href="'+BASE_URL+'checkout/cart/index">Xem giỏ hàng của bạn →</a></p>';
    form += '        </div>';
    form += '    </div>';
    form += '   </div>';
    form += '</div>';
    $("body").append(form);
    $("#product_number").text(product.number);
    open_dialog('frm_notice_added');
    return false;
}

Cart.upAmount = function(item_id) {
    var item = $("#" + item_id);
    if ($(item).size() == 0) {
        return false;
    }
    var current_value = $(item).val();
    if (current_value == undefined || current_value == null) {
        current_value = 1;
    }
    current_value = parseInt(current_value) + 1;
    $(item).val(current_value);
    return false;
};

Cart.downAmount = function(item_id) {
    var item = $("#" + item_id);
    if ($(item).size() == 0) {
        return false;
    }
    var current_value = $(item).val();
    if (current_value == undefined || current_value == null) {
        current_value = 1;
    }
    current_value = parseInt(current_value) - 1;
    if (current_value <= 0) {
        current_value = 1;
    }
    $(item).val(current_value);
    return false;
};

Cart.toggleCartStoreRow = function() {
    $("#cart_container").slideToggle();
    var exp_icon = $("#exp");
    $(exp_icon).toggleClass("exp_up");
    return false;
};

Cart.startCheckout = function() {
    open_dialog("frm_checkout");
    // Show Total Of Cart
    var total_money = $("#total_money");
    if ($(total_money).size() == 0) {
        return;
    }
    $("#store_cart_total").text($(total_money).text());
    // Show List Of Products
    var container = $("#cart_container");
    if ($(container).size() == 0) {
        return false;
    }
    var list_products = $(container).find(".cart_product_row");
    if ($(list_products).size() == 0) {
        return false;
    }
    var list_html = "";
    $(list_products).each(function() {
        var name = $(this).attr("data-name").toString();
        var price = parseInt($(this).attr("data-price"));
        var qty = parseInt($(this).attr("data-qty"));
        var total = price * qty;
        list_html += "<tr>";
        list_html += "<td class='product_name'>"+name+"</td>";
        list_html += "<td class='product_price'>"+number_format(price)+" Đ </td>";
        list_html += "<td class='product_qty'>"+qty+"</td>";
        list_html += "<td class='product_total'>"+number_format(total)+" Đ </td>";
        list_html += "</tr>";
    });
    if (list_html != "") {
        var review_list = $("#review_list tbody");
        if ($(review_list).size() == 0) {
            return false;
        }
        $(review_list).html(list_html);
    }
    // Show Store Name
    var store_name = $("#store_name").text();
    var store_label = $("#store_label");
    if ($(store_label).size() == 0) {
        return false;
    }
    $(store_label).text(store_name);
    return false;
};

Cart.validateData = function() {
    var cart_name = $("#cart_name");
    var cart_email = $("#cart_email");
    var cart_city_id = $("#cart_city_id");
    var cart_district_id = $("#cart_district_id");
    var cart_address = $("#cart_address");
    var cart_contact_number = $("#cart_contact_number");
    var cart_Cart_method = $("#cart_Cart_method");
    var cart_shipping_method = $("#cart_shipping_method");
    // Check Name
    if ($.trim($(cart_name).val()) == "") {
        Cart.showErrorMessage("Tên khách hàng không được để trống");
        $(cart_name).addClass("error_input");
        $(cart_name).focus();
        return false;
    } else {
        $(cart_name).removeClass("error_input");
    }
    // Check Email
    if ($.trim($(cart_email).val()) == "") {
        Cart.showErrorMessage("Email liên hệ không được để trống");
        $(cart_email).addClass("error_input");
        $(cart_email).focus();
        return false;
    } else {
        // Check Email Form
        var pattern = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        if (!pattern.test($(cart_email).val())) {
            Cart.showErrorMessage("Bạn đã nhập sai địa chỉ email");
            $(cart_email).addClass("error_input");
            $(cart_email).focus();
            return false;
        }
        $(cart_email).removeClass("error_input");
    }
    // Check City
    if ($(cart_city_id).val() == "0") {
        Cart.showErrorMessage("Bạn chưa chọn Tỉnh / Thành phố");
        $(cart_city_id).addClass("error_input");
        $(cart_city_id).focus();
        return false;
    } else {
        $(cart_city_id).removeClass("error_input");
    }

    // Check District
    if ($(cart_district_id).val() == "0") {
        Cart.showErrorMessage("Bạn chưa chọn Quận / Huyện");
        $(cart_district_id).addClass("error_input");
        $(cart_district_id).focus();
        $("#district_row").show();
        return false;
    } else {
        $(cart_district_id).removeClass("error_input");
    }

    // Check Address
    if ($.trim($(cart_address).val()) == "") {
        Cart.showErrorMessage("Bạn chưa nhập địa chỉ giao hàng");
        $(cart_address).addClass("error_input");
        $(cart_address).focus();
        return false;
    } else {
        $(cart_address).removeClass("error_input");
    }

    // Check Contact Number
    if ($.trim($(cart_contact_number).val()) == "") {
        Cart.showErrorMessage("Bạn chưa nhập số điện thoại liên hệ");
        $(cart_contact_number).addClass("error_input");
        $(cart_contact_number).focus();
        return false;
    } else {
        if (isNaN($(cart_contact_number).val())) {
            Cart.showErrorMessage("Bạn đã nhập sai số điện thoại");
            $(cart_contact_number).addClass("error_input");
            $(cart_contact_number).focus();
            return false;
        }
        $(cart_contact_number).removeClass("error_input");
    }
    // Hide Error Messages
    Cart.hideErrorMessage();
    // Send Data
    var tid = (new Date()).getTime();
    var data = $("#frm_checkout_data").serialize();
    data += "&_tid=" + tid;
    $.ajax({
        url: BASE_URL + 'checkout/cart/ajax_checkout',
        type: "POST",
        data: data,
        success: function(data) {
            data = $.parseJSON(data);
            if (data.success != undefined) {
                close_dialog("frm_checkout");
                var store_name = $("#store_label").text();
                var output = '<p id="anchor_close" align="center">Đặt hàng thành công</p>';
                output += '<p align="center">Mã đơn hàng của bạn là: #'+data.order.order_code+'</p>';
                output += '<p align="center">Hãy kiểm tra lại email: '+data.order.email+' để xác nhận thông tin</p>';
                output += '<p align="center"><b>'+store_name+' - Trân trọng</b></p>';
                show_message(output);
                $("#frm_checkout .loading").hide();
                // Clear Cart
                var store_row = $("#cart_store_row");
                if ($(store_row).size() > 0) {
                    $(store_row).remove();
                }
                // Check Empty List Remove Button
                var lst_btn_remove = $(".btn_remove_store");
                if ($(lst_btn_remove).size() == 0) {
                    var cart_general_notice = $(".cart_general_notice");
                    if ($(cart_general_notice).size() > 0) {
                        $(cart_general_notice).remove();
                        var cart_empty_notice = $("#cart_empty");
                        if ($(cart_empty_notice).size() > 0) {
                            $(cart_empty_notice).show();
                        }
                    }
                }
            }
        }
    });
    return false;
};

Cart.showErrorMessage = function(message) {
    var error_container = $(".error_notice");
    if ($(error_container).size() == 0) {
        return false;
    }
    $(error_container).find("p > span").text(message);
    $(error_container).show();
    return false;
};

Cart.hideErrorMessage = function() {
    var error_container = $(".error_notice");
    if ($(error_container).size() == 0) {
        return false;
    }
    $(error_container).hide();
    return false;
};

Cart.clearCart = function() {
    var confirm = window.confirm('Bạn muốn xóa giỏ hàng của bạn?');
    if (!confirm) {
        return false;
    }
    var tid = (new Date()).getTime();
    $.ajax({
        url: BASE_URL + 'checkout/cart/ajax_clear_cart',
        type: "GET",
        success: function(data) {
            window.location = "";
        }
    });
    return false;
};

Cart.removeItem = function(data) {
    var tid = (new Date()).getTime();
    $.ajax({
        url: BASE_URL + 'checkout/cart/ajax_remove_item',
        type: "POST",
        data: data,
        success: function() {
            $("#item_" + data.id).remove();
            data.sid = 1;
            // Check empty store
            if (data.sid != undefined) {
                var store_row = $("#cart_store_row_" + data.sid);
                if ($(store_row).find(".cart_table tbody tr").size() == 0) {
                    $(store_row).remove();
                }
                var store_rows = $(".cart_store_row");
                if ($(store_rows).size() == 0) {
                    $("#cart_empty").show();
                    $(".cart_general_notice").hide();
                }
                Cart.updateCartLayout(data.sid);
            }
        }
    });
    return false;
};

Cart.updateCart = function() {
    var form = $("#frm_cart");
    if ($(form).size() == 0) {
        return false;
    }
    var data = $(form).serialize();
    var tid = (new Date()).getTime();
    $.ajax({
        url: BASE_URL + 'checkout/cart/ajax_update_cart',
        type: "POST",
        data: data,
        success: function(output) {
            Cart.updateCartLayout();
            show_message(output);
        }
    });
    return false;
};

Cart.updateCartLayout = function() {
    // Show List Of Products
    var container = $("#cart_container");
    if ($(container).size() == 0) {
        return false;
    }
    var list_products = $(container).find(".cart_product_row");
    if ($(list_products).size() == 0) {
        return false;
    }
    var list_html = "";
    var total = 0;
    $(list_products).each(function() {
        var qty_holder = $(this).find(".qty_holder");
        var lbl_quantity = $(this).find(".lbl_quantity");
        if ($(qty_holder).size() > 0) {
            var qty = parseInt($(qty_holder).val());
            if (qty == 0) {
                $(this).remove();
            } else {
                $(this).attr("data-qty", qty);
                var price = parseInt($(this).attr("data-price"));
                var product_total_price = $(this).find(".product_total_price");
                var total_price_product = price * qty;
                total += total_price_product;
                if ($(product_total_price).size() > 0) {
                    $(product_total_price).text(number_format(total_price_product) + " Đ");
                }
            }
            if ($(lbl_quantity).size() > 0) {
                $(lbl_quantity).text(qty);
            }
        }
    });
    var total_holder = $("#total_money");
    if ($(total_holder).size() > 0) {
        $(total_holder).text(number_format(total) + " Đ");
    }
    var cart_store_number = $("#cart_store_number");
    if ($(cart_store_number).size() > 0) {
        $(cart_store_number).text($(list_products).size());
    }
    return false;
};

Cart.selectCity = function(city_id, handler) {
    if (city_id == "0") {
        return false;
    }
    var tid = (new Date()).getTime();
    var data = {"city_id": city_id};
    $.ajax({
        url: BASE_URL + 'checkout/cart/ajax_select_city',
        type: "POST",
        data: data,
        success: function(output) {
            $("#cart_district_id").html(output);
            $("#district_row").show();
            if (handler != null && handler != undefined) {
                handler();
            }
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(thrownError);
        }
    });
    return false;
};

/* Show Customer Address List */
Cart.showAddressList = function () {
    var tid = (new Date()).getTime();
    $.ajax({
        url: BASE_URL + 'checkout/cart/ajax_show_address_list',
        success: function(list) {
            $("#payment_address_list").html(list).show();
            $(document).click(function (e) {
                var container = $("#payment_address_list");
                if ($(container).is(":visible")) {
                    var target = $(e.target);
                    var pageX = e.pageX;
                    var pageY = e.pageY;
                    var pos = $(container).offset();
                    var y1 = pos.top.toString().replace('px', '') * 1;
                    var y2 = y1 + ($(container).height() * 1);
                    var x1 = pos.left.toString().replace('px', '') * 1;
                    var x2 = x1 + ($(container).width() * 1);
                    if (x1 > pageX || pageX > (x2 + 10)) {
                        $(container).fadeOut(5);
                    }
                    if (y1 > pageY || pageY > (y2 + 10)) {
                        $(container).fadeOut(5);
                    }
                }
            });
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(thrownError);
        }
    });
    return false;
}

/* Select Address of Customer From List */
Cart.selectAddress = function (address_id) {
    var data = $.parseJSON($("#address_item_" + address_id).html());
    $("#cart_name").val(data.first_name + " " + data.last_name);
    $("#cart_contact_number").val(data.mobile_number);
    $("#cart_address").val(data.address);
    $("#cart_note").val(data.note);
    $("#cart_city_id").val(data.city_id);
    Cart.selectCity(data.city_id, function() {
        $("#cart_district_id").val(data.district_id);
        return false;
    });
    return;
};